package com.alinesno.cloud.initializr.starter.common.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.alinesno.cloud.common.facade.mapper.repository.IBaseJpaMapper;
import com.alinesno.cloud.initializr.starter.codegen.entity.GenTable;

/**
 * 业务 数据层
 *
 * @author ruoyi
 */
public interface GenTableMapper extends IBaseJpaMapper<GenTable> {

	/**
	 * 查询业务列表
	 *
	 * @param genTable 业务信息
	 * @return 业务集合
	 */
	public List<GenTable> selectGenTableList(GenTable genTable);

	List<GenTable> selectTablesByDbName(String dbName);

	/**
	 * 查询据库列表
	 *
	 * @param genTable 业务信息
	 * @return 数据库表集合
	 */
	public List<GenTable> selectDbTableList(GenTable genTable);

	/**
	 * 查询所有导入的数据库
	 *
	 * @return 数据库名列表
	 */
	List<String> listAllDb();

	/**
	 * 查询据库列表
	 *
	 * @param tableNames 表名称组
	 * @return 数据库表集合
	 */
	public List<GenTable> selectDbTableListByNames(@Param("nameArray") String[] tableNames,
			@Param("schemaArray") String[] tableSchema);

	/**
	 * 查询所有表信息
	 *
	 * @return 表信息集合
	 */
	public List<GenTable> selectGenTableAll();

	/**
	 * 查询表ID业务信息
	 *
	 * @param id 业务ID
	 * @return 业务信息
	 */
	public GenTable selectGenTableById(Long id);

	/**
	 * 查询表名称业务信息
	 *
	 * @param tableSchema 数据库名
	 * @param tableName   表名称
	 * @return 业务信息
	 */
	public GenTable selectGenTableByName(String tableName, String tableSchema);

	/**
	 * 新增业务
	 *
	 * @param genTable 业务信息
	 * @return 结果
	 */
	public int insertGenTable(GenTable genTable);

	/**
	 * 修改业务
	 *
	 * @param genTable 业务信息
	 * @return 结果
	 */
	public int updateGenTable(GenTable genTable);

	/**
	 * 批量删除业务
	 *
	 * @param ids 需要删除的数据ID
	 * @return 结果
	 */
	public int deleteGenTableByIds(Long[] ids);

	void delByTableSchema(String dbName);

	void updateMeta(GenTable genTable);

	/**
	 * 查询所有接口
	 * 
	 * @param tableStr
	 * @return
	 */
	public List<GenTable> selectGenTableAllByDb(List<String> dbList);
}